package com.hsgene.version.persistence;

import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.version.domain.VersionDomain;
import com.hsgene.version.dto.VersionDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @Description: //产品更新管理
 * @ProjectName: hdas-geneshop
 * @Package: com.hsgene.version.persistence
 * @Author: 江承良
 * @CreateDate: 2019/1/18 10:36
 * @Version: 1.0
 * Copyright: Copyright (c) 2019
 */
@Repository
public interface VersionRepository {

    /***
     * 根据版本号查询数据，用于判断是否版本号是否重复
     * @author jcl
     * @date 2019/1/18 14:23
     * @param versionNo
     * @return
     */
    VersionDto versionByVersionNo(@Param("versionNo") String versionNo);

    /***
     * 添加产品更新信息
     * @author jcl
     * @date 2019/1/18 10:40
     * @param versionDomain
     * @return
     */
    void addVersion(VersionDomain versionDomain);

    /***
     * 产品更新列表储量
     * @author jcl
     * @date 2019/1/18 11:39
     * @param versionNo 版本号
     * @param content 内容
     * @param releaseDateTime 发布时间
     * @return
     */
    int versionCount(@Param("versionNo") String versionNo, @Param("content") String content, @Param("releaseDateTime")
            Date releaseDateTime);

    /***
     * 产品更新列表查询
     * @author jcl
     * @date 2019/1/18 11:49
     * @param limitHelper
     * @param versionNo
     * @param content
     * @param releaseDateTime 发布时间
     * @return
     */
    List<VersionDto> versionPages(@Param("limitHelper") LimitHelper limitHelper, @Param("versionNo") String versionNo,
                                  @Param("content") String content, @Param("orderField") String orderField,
                                  @Param("releaseDateTime") Date releaseDateTime);

    /***
     * 查询产品更新具体内容
     * @author jcl
     * @date 2019/1/18 14:23
     * @param id
     * @return
     */
    VersionDto versionById(@Param("id") String id);

    /***
     * 更新内容
     * @author jcl
     * @date 2019/1/18 15:54
     * @param versionDomain
     * @return
     */
    void updateVersion(VersionDomain versionDomain);

    /***
     * 删除
     * @param id
     */
    void deleteVersion(@Param("id") String id);

    /**
     * @param versionNo 版本号
     * @return com.hsgene.version.dto.VersionDto
     * @description 根据版本号模糊查询更新日志版本信息
     * @author maodi
     * @createDate 2019/1/21 10:24
     */
    List<VersionDto> getVersionsLogs(@Param("versionNo") String versionNo);

    /**
     * @param
     * @return java.util.List<java.lang.String>
     * @description 查询所有版本号
     * @author maodi
     * @createDate 2019/1/21 10:32
     */
    List<String> getVersionsNos();
}
